package com.hj.excel.annotation;


import com.hj.excel.converter.ExcelConverter;
import com.hj.excel.converter.DefaultNullConverter;
import com.hj.excel.enums.CellType;

import java.lang.annotation.*;

/**
 * @author hj
 * @Date 2022/1/4
 * @Description: 列配置注解
 * 添加到属性上,导入导出配置是一致的,若只针对导入set 若只针对导出get
 */
@Target(value = {ElementType.METHOD, ElementType.FIELD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
public @interface ExcelColumn {

    /**
     * 单元格标题 必填
     *
     * @return 单元格标题
     */
    String value();

    /**
     * 索引配置 起始0
     *
     * @return 索引
     */
    int order() default -1;

    /**
     * 列宽 ,非使用自动列宽时生效
     *
     * @return 列宽
     */
    int width() default -1;

    /**
     * 字符列宽 一个中文字符是1
     *
     * @return 字符列宽
     */
    int charWidth() default -1;

    /**
     * 像素列宽
     *
     * @return 像素列宽
     */
    int pxWidth() default -1;

    /**
     * 中文的自动宽度支持.在自动宽度设置为true时生效
     *
     * @return false
     */
    boolean chineseWidth() default false;

    /**
     * 当前列是否隐藏
     *
     * @return false
     */
    boolean hidden() default false;

    /**
     * 时间格式化
     *
     * @return yyyy-MM-dd
     */
    String pattern() default "yyyy-MM-dd";

    /**
     * 浮点数的精度设置,默认不处理
     *
     * @return 位数
     */
    int precision() default -1;

    /**
     * 单元格类型
     *
     * @return 默认String
     */
    CellType cellType() default CellType.CELL_TYPE_STRING;

    /**
     * 是否需要去除两边空格
     *
     * @return 默认 true
     */
    boolean trim() default true;

    /**
     * 转换器设置
     *
     * @return 对应目标类
     */
    Class<? extends ExcelConverter<Object, Object>> converter() default DefaultNullConverter.class;


}
